package com.wicket.okrapp.integration.dto;

import com.wicket.okrapp.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.util.Objects;

import lombok.Data;

/**
 * @desc OneDeptobjScheduleDto
 * @使用场景
 */
@Data
public class OneDeptobjScheduleDto extends BaseDto implements Serializable {

  /**
   * 被评对象目标周期ID
   */
  @ApiModelProperty("被评对象目标周期ID")
  private String evaObjTargetCycleId;

  /**
   * 被评对象内容表主键ID
   */
  @ApiModelProperty("一级部门ID")
  private String evaObjEntityId;

  /**
   * 部门简称
   */
  @ApiModelProperty("一级部门简称")
  private String deptShortName;

  /**
   * 可选分管领导角色成员ID
   */
  @ApiModelProperty("可选分管领导角色成员ID")
  private String roleMemberId;

  /**
   * 主管的就职记录ID
   */
  @ApiModelProperty("主管的就职记录ID")
  private String directorInductionId;

  /**
   * 是否已完成 TRUE:是 FALSE:否
   */
  @ApiModelProperty("是否已完成")
  private String isComplete;

  /**
   * 关联目标内容ID
   */
  @ApiModelProperty("关联目标内容ID")
  private String targetCycleContentId;

  /**
   * 党团主管的就职记录ID
   */
  @ApiModelProperty("党团主管的就职记录ID")
  private String partyAndYouthDirectorInductionId;

  /**
   * 行政主管的姓名
   */
  @ApiModelProperty("行政主管的姓名")
  private String directorIdCardName;

  /**
   * 党团主管的姓名
   */
  @ApiModelProperty("党团主管的姓名")
  private String partyAndYouthDirectorIdCardName;

  /**
   * 排序
   */
  @ApiModelProperty("排序")
  private Long orderNumber;

  /**
   * 部门类型字典ID
   */
  @ApiModelProperty("部门类型字典ID")
  private String typeDictionaryId;

  /**
   * 类型字典名称
   */
  @ApiModelProperty("类型字典名称")
  private String typeDictionaryName;

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    if (!super.equals(o)) return false;
    OneDeptobjScheduleDto that = (OneDeptobjScheduleDto) o;
    return (
      evaObjTargetCycleId == that.evaObjTargetCycleId &&
      evaObjEntityId == that.evaObjEntityId &&
      deptShortName == that.deptShortName &&
      roleMemberId == that.roleMemberId &&
      directorInductionId == that.directorInductionId &&
      isComplete == that.isComplete &&
      targetCycleContentId == that.targetCycleContentId &&
      partyAndYouthDirectorInductionId ==
      that.partyAndYouthDirectorInductionId &&
      directorIdCardName == that.directorIdCardName &&
      partyAndYouthDirectorIdCardName == that.partyAndYouthDirectorIdCardName &&
      orderNumber == that.orderNumber &&
      typeDictionaryId == that.typeDictionaryId &&
      typeDictionaryName == that.typeDictionaryName
    );
  }

  @Override
  public int hashCode() {
    return Objects.hash(
      super.hashCode(),
      evaObjTargetCycleId,
      evaObjEntityId,
      deptShortName,
      roleMemberId,
      directorInductionId,
      isComplete,
      targetCycleContentId,
      partyAndYouthDirectorInductionId,
      directorIdCardName,
      partyAndYouthDirectorIdCardName,
      orderNumber,
      typeDictionaryId,
      typeDictionaryName
    );
  }

}
